package com.atguigu.jxc.service;

import com.atguigu.jxc.domain.ServiceVO;
import com.atguigu.jxc.entity.Goods;

import java.util.Map;

public interface GoodsService {


    ServiceVO<Object> getCode();


    /**
     * 库存管理
     * @param page 页码
     * @param rows 行数
     * @param codeOrName 商品编码或名称
     * @param goodsTypeId 商品类型Id
     * @return Map
     */
    Map<String, Object> listInventory(Integer page, Integer rows, String codeOrName, Integer goodsTypeId);

    /**
     * 商品管理
     * @param page 页码
     * @param rows 行数
     * @param goodsName 商品名称
     * @param goodsTypeId 商品类型Id
     * @return Map
     */
    Map<String, Object> getGoodsList(Integer page, Integer rows, String goodsName, Integer goodsTypeId);

    /**
     * 保存商品
     * @param goods 商品
     * @return ServiceVO
     */
    ServiceVO<Object> saveOrUpdateGoods(Goods goods);

    /**
     * 删除商品
     * @param goodsId 商品Id
     * @return ServiceVO
     */
    ServiceVO<Object> deleteGoods(Integer goodsId);

    /**
     * 库存报警
     * @param page 页码
     * @param rows 行数
     * @param nameOrCode 商品名称或编码
     * @return Map
     */
    Map<String, Object> getNoInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 有库存
     * @param page 页码
     * @param rows 行数
     * @param nameOrCode 商品名称或编码
     * @return Map
     */
    Map<String, Object> getHasInventoryQuantity(Integer page, Integer rows, String nameOrCode);

    /**
     * 保存修改库存
     * @param goodsId 商品Id
     * @param inventoryQuantity 库存数量
     * @param purchasingPrice 进货价格
     * @return ServiceVO
     */
    ServiceVO<Object> saveStock(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    /**
     * 删除库存
     * @param goodsId 商品Id
     * @return ServiceVO
     */
    ServiceVO<Object> deleteStock(Integer goodsId);

    /**
     * 库存报警
     * @return Map
     */
    Map<String, Object> listAlarm();

}
